package com.doit.day05

object _04_伴生类和伴生对象 {
  def main(args: Array[String]): Unit = {
    val ge: JiGe = new JiGe(1,"zss")
    //new 出来的对象，只能够访问class类里面的东西
    //object里面的东西 用类名调用才行
    val zss: JiGe = JiGe(1, "zss")
    val zss1: JiGe = JiGe(1, "zss")
    println(ge == zss)//false
    println(ge == zss1)//false
    println(zss == zss1)//false


  }

}


/*
如果说一恶搞class类的类名和object类的类名一样
那么称：
class类是object类的伴生类
object类是class类的伴生对象

有什么用呢？？？
    他们可以实现动静分离
    他们可以相互访问对方的私有属性
    可以定义重写apply方法和unapply方法
    apply方法：调用的时候可以不用写方法名  ==> 创建class对象的时候 不用new
    unapply方法 ==》 可以更好的适用模式匹配
 */

class JiGe(val id:Int,val name:String){
  private val aaa:Int = 10
  def add(a:Int,b:Int)=a+b
  JiGe.ccc
}

object JiGe{

  private val  ccc:Int = 20

  val gender:String = "male"
  val age:Int = 19

  def getMax(a:Int,b:Int)= if(a>b) a else b


  def apply(id: Int, name: String): JiGe = new JiGe(id, name)

  def unapply(arg: JiGe): Option[(Int, String)] = Some(arg.id,arg.name)


}